package com.cookbook.samples; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TmxMapLoader; import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.badlogic.gdx.math.Vector2; public class ProgressBarSample extends GdxSample { private static final String TAG = "ProgressBarSample"; private SpriteBatch batch; private Texture background, logo, progressBarImg, progressBarBaseImg; private TiledMap map; private float unitScale; private OrthogonalTiledMapRenderer renderer; private OrthographicCamera camera; private Vector2 logoPos, pbPos; private AssetManager manager; @Override public void create () { batch = new SpriteBatch(); manager = new AssetManager(); // Load assets, it is being loaded a map because it is a good example for dependencies between // assets, so don't focus on the map itself considering that it will be explained in later recipes manager.setLoader(TiledMap.class, new TmxMapLoader(new InternalFileHandleResolver())); manager.load("data/loading_screen/map.tmx", TiledMap.class); unitScale = 1/16f; manager.load("data/loading_screen/background.png", Texture.class); manager.load("data/loading_screen/logo.png", Texture.class); manager.load("data/loading_screen/progress_bar.png", Texture.class); manager.load("data/loading_screen/progress_bar_base.png", Texture.class); manager.finishLoading(); // Blocks until all resources are loaded into memory Gdx.app.log(TAG, "Assets loaded"); // Get Assets background = manager.get("data/loading_screen/background.png"); map = manager.get("data/loading_screen/map.tmx"); logo = manager.get("data/loading_screen/logo.png"); progressBarImg = manager.get("data/loading_screen/progress_bar.png"); progressBarBaseImg = manager.get("data/loading_screen/progress_bar_base.png"); renderer = new OrthogonalTiledMapRenderer(map, unitScale); camera = new OrthographicCamera(); camera.setToOrtho(false, 80, 45); camera.update(); // Get logo position logoPos = new Vector2(); // >> bitwise operator bill just divide by 2, the explicitly written times, in this case 1 logoPos.set((Gdx.graphics.getWidth()-logo.getWidth())>>1, Gdx.graphics.getHeight()>>1); // ProgressBar position pbPos = new Vector2(); pbPos.set(logoPos.x, logoPos.y - (logo.getHeight())); // Load assets for the next screen (random assets example) manager.load("data/caveman.png", Texture.class); manager.load("data/facebook.png", Texture.class); manager.load("data/jungle-level.png", Texture.class); manager.load("data/libgdx.png", Texture.class); manager.load("data/menu.png", Texture.class); manager.load("data/star.png", Texture.class); manager.load("data/prehistoric.png", Texture.class); manager.load("data/trex-sheet.png", Texture.class); manager.load("data/uiskin.png", Texture.class); } @Override public void dispose() { manager.dispose(); renderer.dispose(); batch.dispose(); } @Override public void render () { Gdx.gl.glClearColor(1, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // Render background image batch.begin(); batch.draw(background, 0, 0); batch.end(); // Render map renderer.setView(camera); renderer.render(); // Render Logo and Loading Bar batch.begin(); batch.draw(logo, logoPos.x, logoPos.y); batch.draw(progressBarBaseImg, pbPos.x, pbPos.y); batch.draw(progressBarImg, pbPos.x, pbPos.y, progressBarImg.getWidth()*manager.getProgress(), progressBarImg.getHeight()); batch.end(); if (manager.update()) { //Go to Game-screen } } }